{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Lesson 3\n",
    "\n",
    "Python Basic, Lesson 3, v1.0.1, 2016.12 by David.Yi   \n",
    "Python Basic, Lesson 3, v1.0.2, 2017.03 modified by Yimeng.Zhang   \n",
    "\n",
    "\n",
    "### 上次内容要点\n",
    "\n",
    "* 循环语句 for 和 range() 用法\n",
    "* 常用数据类型 \n",
    "    * list 用法\n",
    "    * dict 用法\n",
    "    * tuple 用法\n",
    "* 随机数介绍\n",
    "* 中文分词介绍\n",
    "* 程序练习：剪刀石头布\n",
    "    \n",
    "### 本次内容要点\n",
    "\n",
    "* 列表的切片用法\n",
    "* 函数用法\n",
    "* 程序练习：剪刀石头布、猜数游戏\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 列表切片\n",
    "\n",
    "列表切片的语法\n",
    "\n",
    "a[start:end] 从start开始到end-1结束 \n",
    "\n",
    "a[start:] 从start开始直到末尾\n",
    "\n",
    "a[:end] 从头部开始直到end结束\n",
    "\n",
    "a[:] 复制整个列表\n",
    "\n",
    "从左到右时候的位置关系\n",
    "\n",
    " +---+---+---+---+---+---+\n",
    " | P | y | t | h | o | n |\n",
    " +---+---+---+---+---+---+\n",
    " 0   1   2   3   4   5   6\n",
    "-6  -5  -4  -3  -2  -1\n",
    "\n",
    "a[start:end:step] step 表示步长，正负号表示方向\n",
    "step 默认为 +1 ，所以默认 start 和 end 是从头到尾，如果 step 为负数，则 start 表示尾，end 表示头。\n",
    "start 和 end 是根据 step 来确认的。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['Shanghai', 'Beijing', 'Hangzhou', 'Tokyo', 'Osaka']\n",
      "['Shanghai', 'Beijing', 'Hangzhou']\n",
      "['Shanghai', 'Beijing', 'Hangzhou']\n"
     ]
    }
   ],
   "source": [
    "a = ['Shanghai', 'Beijing', 'Hangzhou', 'Tokyo', 'Osaka']\n",
    "print(a)\n",
    "\n",
    "b = a[0:3]\n",
    "\n",
    "# 省略start，表示从头开始\n",
    "c = a[:3]\n",
    "print(b)\n",
    "print(c)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['Osaka']\n"
     ]
    }
   ],
   "source": [
    "# 省略 end，从-1 到 end\n",
    "b = a[-1:]\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['Hangzhou', 'Tokyo', 'Osaka']\n"
     ]
    }
   ],
   "source": [
    "b = a[-3:]\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]\n",
      "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n"
     ]
    }
   ],
   "source": [
    "a = list(range(100))\n",
    "print(a)\n",
    "\n",
    "b = a[0:10]\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]\n"
     ]
    }
   ],
   "source": [
    "b = a[-10:]\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0, 2, 4, 6, 8]\n"
     ]
    }
   ],
   "source": [
    "b = a[0:10:2]\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[]\n"
     ]
    }
   ],
   "source": [
    "# step 错误，不输出结果\n",
    "b = a[0:10:-2]\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]\n"
     ]
    }
   ],
   "source": [
    "b = a[10:0:-1]\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[99, 94, 89, 84, 79, 74, 69, 64, 59, 54, 49, 44, 39, 34, 29, 24, 19, 14, 9, 4]\n"
     ]
    }
   ],
   "source": [
    "b = a[-1:0:-5]\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[99, 98, 97, 96, 95]\n"
     ]
    }
   ],
   "source": [
    "b = a[-1:-6:-1]\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['Osaka', 'Tokyo', 'Hangzhou', 'Beijing', 'Shanghai']\n"
     ]
    }
   ],
   "source": [
    "# 列表反转\n",
    "\n",
    "a = ['Shanghai', 'Beijing', 'Hangzhou', 'Tokyo', 'Osaka']\n",
    "a.reverse()\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['Osaka', 'Tokyo', 'Hangzhou', 'Beijing', 'Shanghai']\n"
     ]
    }
   ],
   "source": [
    "# 使用切片来完成反转\n",
    "\n",
    "a = ['Shanghai', 'Beijing', 'Hangzhou', 'Tokyo', 'Osaka']\n",
    "b = a[::-1]\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "b\n",
      "de\n",
      "ihgf\n"
     ]
    }
   ],
   "source": [
    "# 字符串切片操作类似列表\n",
    "a = 'abcdefghi'\n",
    "print(a[1:2])\n",
    "print(a[3:5])\n",
    "print(a[:-5:-1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 函数用法\n",
    "\n",
    "函数是组织好的，可重复使用的，用来实现单一，或相关联功能的代码段。函数能提高应用的模块性，和代码的重复利用率。\n",
    "\n",
    "python 提供了许多内建函数，比如print(), max()；\n",
    "\n",
    "python 提供的各种功能的大量内建函数，可以满足绝大多数基本的功能\n",
    "\n",
    "函数可以大大简化重复代码，降低工作量，减少错误\n",
    "\n",
    "函数的基本语法\n",
    "\n",
    "```\n",
    "def 函数名称( 参数 ): \n",
    "\t函数语句 \n",
    "\treturn [值]\n",
    "```\n",
    "\n",
    "虽然 Python 内置了大量函数，但是大多数提供的是基本功能，有时候还是不能满足真正程序的需要\n",
    "函数可以做的很复杂，发展为包(Package)。Python 目前有七万多个各类功能的包，几乎都可以可以免费使用在自己的程序中，这是最近几年 Python 飞速发展的原因之一。\n",
    "学会使用函数来简化程序之后，可以为以后学习面向对象的编程方法打好基础。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "50.24\n",
      "113.03999999999999\n",
      "98.82239400000002\n"
     ]
    }
   ],
   "source": [
    "r1 = 4\n",
    "r2 = 6\n",
    "r3 = 5.61\n",
    "s1 = 3.14 * r1 * r1\n",
    "s2 = 3.14 * r2 * r2\n",
    "s3 = 3.14 * r3 * r3\n",
    "\n",
    "print(s1)\n",
    "print(s2)\n",
    "print(s3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "50.24\n",
      "113.03999999999999\n",
      "98.82239400000002\n"
     ]
    }
   ],
   "source": [
    "def func1(r):\n",
    "    s = 3.14 * r * r\n",
    "    return s\n",
    "\n",
    "print(func1(4))\n",
    "print(func1(6))\n",
    "print(func1(5.61))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max(1,5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max(1,4,6,3,9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6\n"
     ]
    }
   ],
   "source": [
    "# 请注意，函数体内部的语句在执行时，一旦执行到return时，函数就执行完毕，并将结果返回。\n",
    "# 因此，函数内部通过条件判断和循环可以实现非常复杂的逻辑。\n",
    "\n",
    "def my_max(a,b):\n",
    "    if a > b:\n",
    "        return a\n",
    "    else:\n",
    "        return b\n",
    "    \n",
    "print(my_max(3,6))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 5, 30, 14, 25)\n",
      "100\n"
     ]
    }
   ],
   "source": [
    "# 函数的不同参数形式--下节课再讲！\n",
    "# *number理解为可以传入任意数目个参数，包括0个参数\n",
    "\n",
    "def my_max(*number):\n",
    "    print(number)\n",
    "    return 100\n",
    "\n",
    "print(my_max(1,5,30,14,25))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1, 5, 14, 25, 30]\n",
      "30\n"
     ]
    }
   ],
   "source": [
    "def my_max(*number):\n",
    "    a_list = list(number)\n",
    "    a_list.sort()\n",
    "    a = a_list[-1]\n",
    "    print(a_list)\n",
    "    return a\n",
    "\n",
    "print(my_max(1,5,30,14,25))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1, 5, 14, 25, 30]\n",
      "(30, 1)\n"
     ]
    }
   ],
   "source": [
    "# Python的函数返回多值其实就是返回一个tuple，但语法上可以省略括号，写起来更方便\n",
    "\n",
    "def my_max_min(*number):\n",
    "    a_list = list(number)\n",
    "    a_list.sort()\n",
    "    my_max = a_list[-1]\n",
    "    my_min = a_list[0]\n",
    "    print(a_list)\n",
    "    return my_max, my_min\n",
    "\n",
    "print(my_max_min(1,5,30,14,25))    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "* 写一个函数，输入一个数字，判断其是否是偶数，是偶数的话，返回 True，反之返回 False\n",
    "* 写一个函数，输入一个英文单词，返回其中的元音字母的个数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Please input a number:3\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = int(input('Please input a number:'))\n",
    "\n",
    "def oushu():\n",
    "    if int(a/2) == a/2:\n",
    "        return 2\n",
    "        #print('这是个偶数')\n",
    "    else:\n",
    "        return 3\n",
    "        #print('这是个奇数')\n",
    "        \n",
    "result = oushu()   \n",
    "print(result)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "plese input a word:elephant\n",
      "3\n"
     ]
    }
   ],
   "source": [
    "a = input('plese input a word:')\n",
    "b = ['a','e','i','o','u']\n",
    "c = 0\n",
    "\n",
    "for i in list(a):\n",
    "    if i in b:\n",
    "        c += 1\n",
    "print(c)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 scissors , 1 stone , 2 cloth , please input:0\n",
      "human: 0 scissors\n",
      "computer: 1 stone\n",
      "computer win\n"
     ]
    }
   ],
   "source": [
    "# 优化的剪刀石头布程序\n",
    "\n",
    "import random\n",
    "\n",
    "FIRST = 0\n",
    "SECOND = 1 \n",
    "BOTH = 2 \n",
    "\n",
    "t1 = ('scissors', 'stone', 'cloth')\n",
    "t2 = ('human win', 'computer win', 'draw')\n",
    "\n",
    "table = {'01':1, '02':0, '10':0, '12':1, '20':1, '21':0, '00':2, '11':2, '22':2}\n",
    "\n",
    "def which_win(i1, i2):\n",
    "    s = i1 + i2\n",
    "    return table.get(s)\n",
    "\n",
    "# 显示规则\n",
    "for i, s in enumerate(t1):\n",
    "    print(i, s, ', ', end='')\n",
    "    \n",
    "human = input('please input:')\n",
    "h_index = int(human)\n",
    "human_choice = t1[h_index]\n",
    "\n",
    "c_index = random.randint(0,2)\n",
    "computer_choice = t1[c_index]\n",
    "\n",
    "print('human:',h_index,human_choice)\n",
    "print('computer:',c_index, computer_choice)\n",
    "print(t2[which_win(str(h_index), str(c_index))])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 五局三胜的剪刀石头布程序\n",
    "\n",
    "import random\n",
    "\n",
    "FIRST = 0\n",
    "SECOND = 1 \n",
    "BOTH = 2 \n",
    "\n",
    "t1 = ('scissors', 'stone', 'cloth')\n",
    "t2 = ('human win', 'computer win', 'draw')\n",
    "\n",
    "table = {'01':1, '02':2, '10':0, '12':1, '20':1, '21':0, '00':2, '11':2, '22':2}\n",
    "\n",
    "def which_win(i1, i2):\n",
    "    s = i1 + i2\n",
    "    return table.get(s)\n",
    "\n",
    "mark = True\n",
    "computer_win = 0\n",
    "human_win = 0\n",
    "\n",
    "while mark:\n",
    "\n",
    "    # 显示规则\n",
    "    for i, s in enumerate(t1):\n",
    "        print(i, s, ', ', end='')\n",
    "        \n",
    "    human = input('please input:')\n",
    "\n",
    "    c_index = random.randint(0,2)\n",
    "    computer = t1[c_index]\n",
    "\n",
    "    print(c_index, computer)\n",
    "\n",
    "    who_win = which_win(human, str(c_index))\n",
    "    \n",
    "    if who_win == 0:\n",
    "        human_win += 1\n",
    "    if who_win == 1:\n",
    "        computer_win += 1\n",
    "    \n",
    "    print(t2[which_win(human, str(c_index))])\n",
    "    print('human:computer ', human_win, ':', computer_win)\n",
    "    print()\n",
    "    \n",
    "    if (human_win == 3) or (computer_win == 3):\n",
    "        mark = False\n",
    "\n",
    "if human_win == 3:\n",
    "    print('final human win')\n",
    "else:\n",
    "    print('final computer win')\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Now you can guess...\n",
      "please input number:50\n",
      "too small\n",
      "please input number:60\n",
      "too small\n",
      "please input number:70\n",
      "too small\n",
      "please input number:80\n",
      "bingo!\n"
     ]
    }
   ],
   "source": [
    "# 猜数，人猜\n",
    "\n",
    "import random\n",
    "\n",
    "a = random.randint(1,1000)\n",
    "\n",
    "print('Now you can guess...')\n",
    "\n",
    "guess_mark = True\n",
    "\n",
    "while guess_mark:\n",
    "    user_number =int(input('please input number:'))\n",
    "    if user_number > a:\n",
    "        print('too big')\n",
    "    if user_number < a:\n",
    "        print('too small')\n",
    "    if user_number == a:\n",
    "        print('bingo!')\n",
    "        guess_mark = False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Now you can guess...\n",
      "please input number:20\n",
      "too small\n",
      "please input number:40\n",
      "too big\n",
      "please input number:30\n",
      "too big\n",
      "please input number:25\n",
      "bingo!\n",
      "your guess number list: [20, 40, 30, 25]\n",
      "you try times: 4\n"
     ]
    }
   ],
   "source": [
    "# 猜数，人猜\n",
    "# 记录猜数的过程\n",
    "\n",
    "import random\n",
    "user_number_list = []\n",
    "user_guess_count = 0\n",
    "a = random.randint(1,100)\n",
    "print('Now you can guess...')\n",
    "guess_mark = True\n",
    "\n",
    "while guess_mark:\n",
    "    user_number =int(input('please input number:'))\n",
    "    \n",
    "    user_number_list.append(user_number)\n",
    "    user_guess_count += 1\n",
    "    \n",
    "    if user_number > a:\n",
    "        print('too big')\n",
    "    if user_number < a:\n",
    "        print('too small')\n",
    "    if user_number == a:\n",
    "        print('bingo!')\n",
    "        print('your guess number list:', user_number_list)\n",
    "        print('you try times:', user_guess_count)\n",
    "        guess_mark = False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Now you can guess...\n",
      "please input number:99\n",
      "too big\n",
      "please input number:40\n",
      "too small\n",
      "please input number:50\n",
      "too small\n",
      "please input number:60\n",
      "too small\n",
      "please input number:70\n",
      "too big\n",
      "try harder, please input number:65\n",
      "too small\n",
      "try harder, please input number:67\n",
      "too small\n",
      "try harder, please input number:68\n",
      "bingo!\n",
      "your guess number list: [99, 40, 50, 60, 70, 65, 67, 68]\n",
      "you try times: 8\n"
     ]
    }
   ],
   "source": [
    "# 猜数，人猜\n",
    "# 增加判断次数，如果1-4次，以及以上显示不同提示语\n",
    "\n",
    "import random\n",
    "\n",
    "user_number_list = []\n",
    "\n",
    "user_guess_count = 0\n",
    "\n",
    "a = random.randint(1,100)\n",
    "\n",
    "print('Now you can guess...')\n",
    "\n",
    "guess_mark = True\n",
    "\n",
    "while guess_mark:\n",
    "    \n",
    "    if 0 <= user_guess_count <= 4:\n",
    "        user_number =int(input('please input number:'))\n",
    "    if 4 < user_guess_count <= 100:\n",
    "        user_number =int(input('try harder, please input number:'))\n",
    "    \n",
    "    user_number_list.append(user_number)\n",
    "    user_guess_count += 1\n",
    "    \n",
    "    if user_number > a:\n",
    "        print('too big')\n",
    "    if user_number < a:\n",
    "        print('too small')\n",
    "    if user_number == a:\n",
    "        print('bingo!')\n",
    "        print('your guess number list:', user_number_list)\n",
    "        print('you try times:', user_guess_count)\n",
    "        guess_mark = False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
